use list initialization to construct xcsv char map table.
authortsteven4 <13596209+tsteven4@users.noreply.github.com>
Wed, 24 Nov 2021 17:51:14 +0000 (09:51 -0800)
committertsteven4 <13596209+tsteven4@users.noreply.github.com>
Wed, 24 Nov 2021 17:51:14 +0000 (09:51 -0800)
xcsv.cc
xcsv.h

diff --git a/xcsv.cc b/xcsv.cc
index 02eb1ab9ce2d8cc34b10176119710bc64366f90d..a6d04866e40e42dec681e6326dd04c34ead669cf 100644 (file)
--- a/xcsv.cc
+++ b/xcsv.cc
@@ -158,7 +158,7 @@ const QHash<QString, XcsvStyle::xcsv_token> XcsvStyle::xcsv_tokens {
 };
 
 /* a table of config file constants mapped to chars */
-const XcsvStyle::char_map_t XcsvStyle::xcsv_char_table[] = {
+const QHash<QString, QString> XcsvStyle::xcsv_char_table {
   { "COMMA",           ","     },
   { "COMMASPACE",              ", "    },
   { "SINGLEQUOTE",     "'"     },
@@ -172,22 +172,15 @@ const XcsvStyle::char_map_t XcsvStyle::xcsv_char_table[] = {
   { "SPACE",           " "     },
   { "HASH",            "#"     },
   { "WHITESPACE",              "\\w"   },
-  { "PIPE",            "|"     },
-  { nullptr,           nullptr }
+  { "PIPE",            "|"     }
 };
 
 // Given a keyword of "COMMASPACE", return ", ".
 QString
 XcsvStyle::xcsv_get_char_from_constant_table(const QString& key)
 {
-  static QHash<QString, QString> substitutions;
-  if (substitutions.empty()) {
-    for (const char_map_t* cm = xcsv_char_table; !cm->key.isNull(); cm++) {
-      substitutions.insert(cm->key, cm->chars);
-    }
-  }
-  if (substitutions.contains(key)) {
-    return substitutions[key];
+  if (xcsv_char_table.contains(key)) {
+    return xcsv_char_table[key];
   }
   // No substitution found? Just return original.
   return key;
diff --git a/xcsv.h b/xcsv.h
index 85f194c060845ce7f97539f7da85c14b88723eef..56acc4cd23402c0d5f4421f3aae1fadfd2e1dd1c 100644 (file)
--- a/xcsv.h
+++ b/xcsv.h
@@ -244,12 +244,6 @@ public:
 private:
   /* Types */
 
-  /* something to map config file constants to chars */
-  struct char_map_t {
-    const QString key;
-    const QString chars;
-  };
-
   /* Member Functions */
 
   static QString dequote(const QString& in);
@@ -264,7 +258,7 @@ private:
   static const QHash<QString, xcsv_token> xcsv_tokens;
 
   /* a table of config file constants mapped to chars */
-  static const char_map_t xcsv_char_table[];
+  static const QHash<QString, QString> xcsv_char_table;
 };
 
 class XcsvFormat : public Format